We are obtaining the self-thinning line from a size structured non-finite population growing through time. The model will be run under a series of species- and environment-specific scenarios
\[ N_{T}= \int_{S_{0}}^{S_{MAX}}N(S)ds.....S_{T} = \int_{S_{0}}^{S_{MAX}} S.N(S)ds.....\overline{S} = \frac{S_{T}}{N_{T}} \] i.e. the plot shows size-density (total N vs mean S) for points through time which forms the trajectory of the line.
To get total N, we integrate N from initial to max size to get the total number of individuals of all size, integration done for each step through time. i.e. calculating the area under the curve from S_0 to S_MAX at time step 1, then the area under the curve from S_0 to S_MAX at time step 2, etc.
Then integrating: S*N(S), each size value times the # of individuals at that size: from initial to max size, and mean size is just the average of the total quantity of size, so total height, divided by total number of individuals \(N_{T}\).
We need the mean size \(\overline S\) for our self-thinning line, which we can get by dividing the total size by total density at each step
3a. We want to improve our approximation by integrating with shorter time steps across the regions under the size-density curve we are interested in, accounting for the number of individuals and their mean height for each separate size class. In doing so, we are able to account for the continual influx of saplings which would otherwise skew our mean height and density data, and thus focus on the larger individuals that are growing into maturity. This can be done with the following integral and its approximate sum:
\[ \overline{H}=\int_0^\infty \frac{ Hn(H,t)}{N(t)}dt \simeq \frac{\sum H_{i}n(H_{i},t)(H_{i}-H_{i-1})}{\sum n(H_{i},t)(H_{i}-H_{i-1})} = \frac{\sum H_{i}}{K}\] Not all our sub-intervals of integration will be equal in size/width, as the time steps in the initial stand phase are much shorter to account for the extremely dynamic nature of this period and to capture all of this detail. We cannot take K to be a sum of equal (Hi - (Hi-1)) segments. And the regular introduction of new individuals at different times means that we need to determine the density per height segment (Hi-(Hi-1)) per unit area, #/H/m^2
Trapazoidal Rule in R → The Trapezoidal Rule is one of Closed Newton-Cotes formulas for approximating the definite integral of a function. We integrate by calculating and summing the areas of many consecutive trapezoids below our size-density curve, which gives a good approximation of the population dynamics in this case.
Additionally, we may need to select a cut-off point in the stand’s age at which we stop incorporating new individuals into the model, as these new saplings likely pop up (when older larger plants die during the thinning process providing short periods of increased light and space?), but these saplings don’t persist to compete with the main/mature stand. + minimum height to further reduce noise?
## Warning: package 'dplyr' was built under R version 4.1.1
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Warning: package 'ggplot2' was built under R version 4.1.1
## Warning: package 'ggrepel' was built under R version 4.1.1
## [2022-03-30 16:23:03.341] Activating logging to console
Average size over time. Get average size by dividing total of chosen size variable by the sum of individuals per unit area - we have mean stem area, mean stem diameter, mean height, mean mass above ground, and also mean leaf area (LA)
#Grow a stand: higher resolution cohort spacing + recruitment decay = 0 (i.e. no decay)
Plots shows 1. the flow of individuals in the stand over time, 2. the leaf area over time, and 3. the self-thinning line that incorporates all individuals of all sizes and successional groups including multiple thinning periods.
## Creating default FF16 environemnt
## [2022-03-30 16:23:04.758] schedule> 1: Splitting {110} times (141)
## [2022-03-30 16:23:07.379] schedule> 2: Splitting {153} times (251)
## [2022-03-30 16:23:11.747] schedule> 3: Splitting {99} times (404)
## [2022-03-30 16:23:16.916] schedule> 4: Splitting {120} times (503)
## [2022-03-30 16:23:23.225] schedule> 5: Splitting {81} times (623)
## [2022-03-30 16:23:30.525] schedule> 6: Splitting {48} times (704)
## [2022-03-30 16:23:38.521] schedule> 7: Splitting {11} times (752)
## Creating default FF16 environemnt
This function was implemented to decrease the seed rain quickly and very early on to capture the trajectory of just the first wave of individuals. This is the function used to change the seed rain:
(with recruitment decay implemented)
LMA & LL -LMA thick vs thin leaves – values: 0.07, 0.24, 0.5 [kg/m^2] -Plot of LA over time and self-thinning lines with time stamps (year) on one plot and in separate plots
## Creating default FF16 environemnt
## [2022-03-30 16:23:57.402] schedule> 1: Splitting {56} times (141)
## [2022-03-30 16:23:58.728] schedule> 2: Splitting {65} times (197)
## [2022-03-30 16:24:00.950] schedule> 3: Splitting {1} times (262)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:24:06.490] schedule> 1: Splitting {59} times (141)
## [2022-03-30 16:24:07.907] schedule> 2: Splitting {67} times (200)
## [2022-03-30 16:24:10.464] schedule> 3: Splitting {5} times (267)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:24:16.788] schedule> 1: Splitting {58} times (141)
## [2022-03-30 16:24:18.211] schedule> 2: Splitting {59} times (199)
## [2022-03-30 16:24:20.493] schedule> 3: Splitting {2} times (258)
## Creating default FF16 environemnt
Nitrogen per unit area values: 0.00187, 0.003, 0.005 [kg/m^2]
## Creating default FF16 environemnt
## [2022-03-30 16:24:27.404] schedule> 1: Splitting {59} times (141)
## [2022-03-30 16:24:28.839] schedule> 2: Splitting {67} times (200)
## [2022-03-30 16:24:31.428] schedule> 3: Splitting {5} times (267)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:24:38.102] schedule> 1: Splitting {57} times (141)
## [2022-03-30 16:24:40.025] schedule> 2: Splitting {75} times (198)
## [2022-03-30 16:24:43.503] schedule> 3: Splitting {26} times (273)
## [2022-03-30 16:24:47.394] schedule> 4: Splitting {13} times (299)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:24:57.553] schedule> 1: Splitting {55} times (141)
## [2022-03-30 16:25:02.234] schedule> 2: Splitting {78} times (196)
## [2022-03-30 16:25:06.622] schedule> 3: Splitting {34} times (274)
## [2022-03-30 16:25:11.704] schedule> 4: Splitting {9} times (308)
## [2022-03-30 16:25:16.981] schedule> 5: Splitting {6} times (317)
## Creating default FF16 environemnt
HMAT: 5, 10, 25 and 40 metres
## Creating default FF16 environemnt
## [2022-03-30 16:25:29.296] schedule> 1: Splitting {40} times (141)
## [2022-03-30 16:25:30.408] schedule> 2: Splitting {37} times (181)
## [2022-03-30 16:25:33.500] schedule> 3: Splitting {9} times (218)
## [2022-03-30 16:25:36.704] schedule> 4: Splitting {14} times (227)
## [2022-03-30 16:25:40.098] schedule> 5: Splitting {8} times (241)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:25:48.859] schedule> 1: Splitting {53} times (141)
## [2022-03-30 16:25:50.784] schedule> 2: Splitting {53} times (194)
## [2022-03-30 16:25:53.671] schedule> 3: Splitting {14} times (247)
## [2022-03-30 16:25:56.788] schedule> 4: Splitting {7} times (261)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:26:04.189] schedule> 1: Splitting {63} times (141)
## [2022-03-30 16:26:05.494] schedule> 2: Splitting {77} times (204)
## [2022-03-30 16:26:07.720] schedule> 3: Splitting {32} times (281)
## [2022-03-30 16:26:10.554] schedule> 4: Splitting {15} times (313)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:26:16.779] schedule> 1: Splitting {63} times (141)
## [2022-03-30 16:26:18.036] schedule> 2: Splitting {77} times (204)
## [2022-03-30 16:26:20.183] schedule> 3: Splitting {32} times (281)
## [2022-03-30 16:26:22.825] schedule> 4: Splitting {15} times (313)
## Creating default FF16 environemnt
-> are there differences? how big?
## Creating default FF16 environemnt
## [2022-03-30 16:26:29.546] schedule> 1: Splitting {56} times (141)
## [2022-03-30 16:26:30.873] schedule> 2: Splitting {65} times (197)
## [2022-03-30 16:26:33.121] schedule> 3: Splitting {1} times (262)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:26:38.663] schedule> 1: Splitting {59} times (141)
## [2022-03-30 16:26:40.090] schedule> 2: Splitting {67} times (200)
## [2022-03-30 16:26:42.663] schedule> 3: Splitting {5} times (267)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:26:48.933] schedule> 1: Splitting {58} times (141)
## [2022-03-30 16:26:50.358] schedule> 2: Splitting {59} times (199)
## [2022-03-30 16:26:52.639] schedule> 3: Splitting {2} times (258)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:26:58.698] schedule> 1: Splitting {59} times (141)
## [2022-03-30 16:27:00.123] schedule> 2: Splitting {67} times (200)
## [2022-03-30 16:27:02.693] schedule> 3: Splitting {5} times (267)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:27:09.337] schedule> 1: Splitting {57} times (141)
## [2022-03-30 16:27:11.235] schedule> 2: Splitting {75} times (198)
## [2022-03-30 16:27:14.644] schedule> 3: Splitting {26} times (273)
## [2022-03-30 16:27:18.486] schedule> 4: Splitting {13} times (299)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:27:28.629] schedule> 1: Splitting {55} times (141)
## [2022-03-30 16:27:33.309] schedule> 2: Splitting {78} times (196)
## [2022-03-30 16:27:37.683] schedule> 3: Splitting {34} times (274)
## [2022-03-30 16:27:42.755] schedule> 4: Splitting {9} times (308)
## [2022-03-30 16:27:48.041] schedule> 5: Splitting {6} times (317)
## Creating default FF16 environemnt
plot 1: self-thinning lines separate with time stamps
plot 2: self-thinning lines together
plot 3: LA over time
plot 4: zoom into line
plot 5: size distribution first run
plot 6: total mass over time
run, lma, narea
1 0.07 0.00187
2 0.07 0.003
3 0.07 0.005
4 0.24 0.00187
5 0.24 0.003
6 0.24 0.005
7 0.5 0.00187
8 0.5 0.003
9 0.5 0.005
## Creating default FF16 environemnt
## [2022-03-30 16:28:01.698] schedule> 1: Splitting {56} times (141)
## [2022-03-30 16:28:03.028] schedule> 2: Splitting {65} times (197)
## [2022-03-30 16:28:05.260] schedule> 3: Splitting {1} times (262)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:28:11.340] schedule> 1: Splitting {60} times (141)
## [2022-03-30 16:28:13.206] schedule> 2: Splitting {79} times (201)
## [2022-03-30 16:28:16.825] schedule> 3: Splitting {29} times (280)
## [2022-03-30 16:28:21.281] schedule> 4: Splitting {8} times (309)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:28:33.272] schedule> 1: Splitting {57} times (141)
## [2022-03-30 16:28:35.815] schedule> 2: Splitting {80} times (198)
## [2022-03-30 16:28:39.971] schedule> 3: Splitting {52} times (278)
## [2022-03-30 16:28:45.632] schedule> 4: Splitting {13} times (330)
## [2022-03-30 16:28:51.551] schedule> 5: Splitting {1} times (343)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:29:04.485] schedule> 1: Splitting {59} times (141)
## [2022-03-30 16:29:05.927] schedule> 2: Splitting {67} times (200)
## [2022-03-30 16:29:08.519] schedule> 3: Splitting {5} times (267)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:29:15.266] schedule> 1: Splitting {57} times (141)
## [2022-03-30 16:29:17.164] schedule> 2: Splitting {75} times (198)
## [2022-03-30 16:29:20.585] schedule> 3: Splitting {26} times (273)
## [2022-03-30 16:29:24.429] schedule> 4: Splitting {13} times (299)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:29:34.540] schedule> 1: Splitting {55} times (141)
## [2022-03-30 16:29:39.221] schedule> 2: Splitting {78} times (196)
## [2022-03-30 16:29:43.595] schedule> 3: Splitting {34} times (274)
## [2022-03-30 16:29:48.651] schedule> 4: Splitting {9} times (308)
## [2022-03-30 16:29:53.927] schedule> 5: Splitting {6} times (317)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:30:05.719] schedule> 1: Splitting {58} times (141)
## [2022-03-30 16:30:07.146] schedule> 2: Splitting {59} times (199)
## [2022-03-30 16:30:09.431] schedule> 3: Splitting {2} times (258)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:30:15.583] schedule> 1: Splitting {55} times (141)
## [2022-03-30 16:30:17.303] schedule> 2: Splitting {67} times (196)
## [2022-03-30 16:30:20.312] schedule> 3: Splitting {26} times (263)
## [2022-03-30 16:30:24.018] schedule> 4: Splitting {13} times (289)
## [2022-03-30 16:30:27.751] schedule> 5: Splitting {1} times (302)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:30:37.801] schedule> 1: Splitting {54} times (141)
## [2022-03-30 16:30:41.629] schedule> 2: Splitting {62} times (195)
## [2022-03-30 16:30:45.212] schedule> 3: Splitting {38} times (257)
## [2022-03-30 16:30:49.402] schedule> 4: Splitting {7} times (295)
## [2022-03-30 16:30:53.741] schedule> 5: Splitting {10} times (302)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:31:05.917] schedule> 1: Splitting {56} times (141)
## [2022-03-30 16:31:06.273] schedule> 2: Splitting {63} times (197)
## [2022-03-30 16:31:06.889] schedule> 3: Splitting {5} times (260)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:31:08.603] schedule> 1: Splitting {55} times (141)
## [2022-03-30 16:31:08.972] schedule> 2: Splitting {78} times (196)
## [2022-03-30 16:31:09.670] schedule> 3: Splitting {18} times (274)
## [2022-03-30 16:31:10.461] schedule> 4: Splitting {7} times (292)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:31:12.504] schedule> 1: Splitting {58} times (141)
## [2022-03-30 16:31:12.892] schedule> 2: Splitting {73} times (199)
## [2022-03-30 16:31:13.598] schedule> 3: Splitting {30} times (272)
## [2022-03-30 16:31:14.460] schedule> 4: Splitting {18} times (302)
## [2022-03-30 16:31:15.421] schedule> 5: Splitting {6} times (320)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:31:17.824] schedule> 1: Splitting {56} times (141)
## [2022-03-30 16:31:18.169] schedule> 2: Splitting {59} times (197)
## [2022-03-30 16:31:18.796] schedule> 3: Splitting {34} times (256)
## [2022-03-30 16:31:19.603] schedule> 4: Splitting {8} times (290)
## [2022-03-30 16:31:20.444] schedule> 5: Splitting {10} times (298)
## Creating default FF16 environemnt
Varying the background mortality leads to different trajectory and stand outcomes
## Creating default FF16 environemnt
## [2022-03-30 16:31:24.780] schedule> 1: Splitting {60} times (141)
## [2022-03-30 16:31:26.249] schedule> 2: Splitting {71} times (201)
## [2022-03-30 16:31:28.953] schedule> 3: Splitting {13} times (272)
## Creating default FF16 environemnt
## Creating default FF16 environemnt
## [2022-03-30 16:31:35.389] schedule> 1: Splitting {49} times (141)
## [2022-03-30 16:31:36.547] schedule> 2: Splitting {45} times (190)
## [2022-03-30 16:31:38.169] schedule> 3: Splitting {3} times (235)
## Creating default FF16 environemnt
We can vary the scaling exponents in each trade-off to change the strength of the trade-off, how large the spectrum of values is